#pragma once

#include <string>
#include <vector>
#include <initializer_list>

class A
{
public:
    A(std::initializer_list<int> integers);
    ~A();

public:
    void append(std::initializer_list<int> integers);
    void print();

private:
    std::vector<int> m_vecIntegers;
};

enum class JsonType {
    JsonTypeNull,
    JsonTypeInt,
    JsonTypeLong,
    JsonTypeDouble,
    JsonTypeBool,
    JsonTypeString,
    JsonTypeArray,
    JsonTypeObject
};

struct JsonNode {
    JsonNode(const char* k, const char* v);
    JsonNode(const char* k, double v);

    JsonType type;
    std::string key;
    std::string value;
};

class Json
{
public:
    static Json& array(std::initializer_list<JsonNode> nodes);

public:
    Json() {}
    ~Json() {}

public:
    std::string toString();

private:
    std::vector<JsonNode> m_nodes;
    static Json m_json;
};